home *** CD-ROM | disk | FTP | other *** search
- \ Demonstrate Custom Screen and HAM - Hold and Modify
- \ This will generate a drawing then pause 4 seconds before
- \ drawing another
- \
- \ Authors: Phil Burk & Brian Donovan
- \ Copyright 1986 Delta Research
- \
- \ MOD: PLB 8/6/88 Use more normal window so ?CLOSEBOX can be used.
-
- include? newwindow.setup ju:amiga_graph
- include? ?closebox ju:amiga_events
- include? newscreen.setup ju:screen_support
- include? HAM ji:graphics/view.j
- include? msec ju:msec
- include? choose ju:random
-
- ANEW TASK-DEMO_HAM
- decimal
- NewScreen HAMNewScreen
- NewWindow HAMNewWindow
-
-
- VARIABLE HAMScreen
-
- : HAM.OPEN.SCREEN ( -- , screen | NULL)
- gr.init
- \ Set to default values.
- HAMNewScreen NewScreen.Setup
- HAMNewWindow NewWindow.Setup
- \
- \ Modify defaults for this demo.
- HAM HAMNewScreen ..! ns_viewmodes ( Change to HAM )
- 6 HAMNewScreen ..! ns_depth
- 190 HAMNewScreen ..! ns_TopEdge ( Start at bottom and scroll up. )
- \
- \ Open Screen and store pointer in NewWindow structure.
- HAMNewScreen openscreen() dup HAMScreen ! ( Open screen. )
- \
- \ Sometimes the Amiga can build a bad COPPER list for screens.
- \ This can happen if you have Emacs up in INTERLACE mode and open a
- \ NON-INTERLACE screen.
- \ The following call will correct this problem (hopefully).
- RemakeDisplay()
- ;
-
- : HAM.OPEN.WINDOW ( screen -- , window | NULL )
- >abs HAMNewWindow ..! nw_screen ( Modify window for this screen. )
- \
- \ Set up window.
- CUSTOMSCREEN HAMNewWindow ..! nw_type
- 0" HAM - JForth - Delta Research" >abs
- HAMNewWindow ..! nw_Title
- 0 HAMNewWindow ..! nw_TopEdge
- 320 HAMNewWindow ..! nw_Width
- 200 HAMNewWindow ..! nw_Height
- \ Turn off window depth, set ACTIVATE, keep other defaults.
- HAMNewWindow ..@ nw_flags
- WINDOWDEPTH -1 xor AND
- ACTIVATE | HAMNewWindow ..! nw_flags
- HAMNewWindow gr.opencurw
- ;
-
- : HAM.CLOSE ( -- , Close screen and window.)
- HAMScreen @ closescreen()
- ;
-
- : SCREEN.RISEUP ( rel_screen -- , Scroll screen up display. )
- 190 0
- DO dup 0 -1 MoveScreen()
- call graphics_lib WaitTOF drop
- LOOP
- drop
- ;
-
- \ HAM Drawing routines.
- \ Constants for building colors.
- $ 10 constant HAM_CHANGE_BLUE
- $ 20 constant HAM_CHANGE_RED
- $ 30 constant HAM_CHANGE_GREEN
-
- : HAM.COLOR! ( RGB new_value -- , Change colors)
- OR gr.color!
- ;
-
- : HAM.RANDOM.LINES ( N -- )
- 0 DO
- 64 choose gr.color!
- 320 choose 200 choose gr.draw
- LOOP
- ;
-
- : HAM.RANDOM.BOXES ( N -- )
- 0 DO
- 64 choose gr.color!
- 320 choose 320 choose 2sort
- 200 choose 200 choose 2sort
- >r swap r> gr.rect
- LOOP
- ;
-
-
- : HAM.POP.ART ( -- , Create drawings until key hit. )
- BEGIN
- 100 choose ham.random.boxes
- 50 choose ham.random.lines
- 4000 msec
- ?closebox
- UNTIL
- ;
-
- : HAM-ART ( -- Run HAM demo. )
- ." HAM - JForth - Delta Research" cr
- ham.open.screen ?dup
- IF ham.open.window
- IF 100 choose ham.random.boxes
- 50 choose ham.random.lines
- HAMScreen @ screen.riseup
- ham.pop.art
- gr.closecurw
- THEN
- ham.close
- ELSE ." Could not open screen!" cr
- THEN
- gr.term
- ;
-
- ." Enter: HAM-ART for demo." cr
-